<?php
/**
 * @Copyright (C) 2018
 * @Author  xujun <xujun0429@vip.qq.com>
 * @Version  Beta 1.0
 */

namespace common\component;
//Access数据库操作类

class AccessDB
{
    //获取access表数据
    public static function get_list($table,$filename,$get_num='20000',$num='20000',$index='FIRMID')
    {
        //链接数据文件
        $dir = \Yii::getAlias('@common').'/data';
        $databasepath =  $dir.'/'.$filename.".mdb";
        $odbc = "Driver={Microsoft Access Driver (*.mdb)};Dbq=".$databasepath;
        $conn = odbc_connect($odbc, '', '', SQL_CUR_USE_ODBC);

        //查询表数据
        $sql =" select * from ".$table;

        $query = odbc_exec($conn, $sql);

        //获取字段个数
        $num = odbc_num_fields($query);

        $field = array();

        //获取字段
        for($i = 0; $i <odbc_num_fields($query); $i ++){
            $field[$i] = @odbc_field_name($query,$i+1);
        }

        //循环获取数据
        $i=0;
        $arr = array();

        while(odbc_fetch_row($query)){
            //转码（防止乱码）
            for($j=0;$j<$num;$j++)
            {
                $arr[$i][$field[$j]] = iconv('gb2312','utf-8',odbc_result($query,$j+1));
            }
            $i++;
        }

        //关闭链接
        odbc_close($conn);

        //输出数组
        return $arr;
    }


    //获取access表数据
    public static function get_all_list($table,$filename,$hdate,$index='FIRMID')
    {
        //链接数据文件
        $dir = \Yii::getAlias('@common').'/data';
        $databasepath =  $dir.'/'.$filename.".mdb";
        $odbc = "Driver={Microsoft Access Driver (*.mdb)};Dbq=".$databasepath;
        $conn = odbc_connect($odbc, '', '', SQL_CUR_USE_ODBC);

        //查询表数据
        $sql =" select * from ".$table. " where [$index] = '".$hdate."'";

        $query = odbc_exec($conn, $sql);

        //获取字段个数
        $num = odbc_num_fields($query);
        $field = array();

        //获取字段
        for($i = 0; $i <odbc_num_fields($query); $i ++){
            $field[$i] = @odbc_field_name($query,$i+1);
        }

        //循环获取数据
        $i=0;
        $arr = array();

        while(odbc_fetch_row($query)){
            //转码（防止乱码）
            for($j=0;$j<$num;$j++)
            {
                $arr[$i][$field[$j]] = iconv('gb2312','utf-8',odbc_result($query,$j+1));
            }
            $i++;
        }

        //关闭链接
        odbc_close($conn);

        //输出数组
        return $arr;
    }


    //统计总记录数
    public static function get_count($table,$filename)
    {
        //链接数据文件
        $dir = \Yii::getAlias('@common').'/data';
        $databasepath =  $dir.'/'.$filename.".mdb";
        $odbc = "Driver={Microsoft Access Driver (*.mdb)};Dbq=".$databasepath;
        $conn = odbc_connect($odbc, '', '', SQL_CUR_USE_ODBC);

        //查询表数据
        $sql ="select count(*) as num from ".$table;
        $query = odbc_exec($conn, $sql);
        $num = odbc_result($query,1);
        return $num;
    }


}